In a disc drive, data is stored on one or more discs. A disc is typically divided into a plurality of generally parallel disc tracks, which are arranged concentrically with one another and perpendicular to the disc radius. Each track is further broken down into a plurality of sectors, which further aid in locating information. Typically, the disc is a magnetic recording that uses single-state domains and magnetic transition domains to store bits corresponding to a “1” or “0” on the disc surface. Usually, a magnetic domain contains at least 100 thermally stable grains or magnetic particles.
The data is stored and retrieved by a transducer or “head” that is positioned over a desired track by an actuator arm. Typically, when a read operation is sent from a host (such as a computer) to the disc drive, a controller converts a logical block address (LBA) received from the host to a physical block address (PBA). Next, the physical track, head and sector information, which includes the number of sectors to be read from a destination track, are calculated based on the PBA. A seek operation is then performed and sectors falling on the same track are usually read within a disc revolution. Data read from the disc is transferred to a buffer random access memory (RAM) inside the disc drive before being sent to the host.
It is common to encounter disc read-errors when the disc drive is transferring data from the disc to the buffer RAM inside the disc drive. Error correction is typically performed on the disc read-errors to correct data that is sent to the host. However, ever increasing disc drive densities increase the number of errors encountered. Some errors occur momentarily due to system noise, thermal conditions or external vibrations. Small magnetic domains have a propensity to reverse their magnetic state due to these conditions. These and other errors may propagate into large errors (growth errors) under certain conditions that ultimately cause long correction times and unrecoverable errors.
In current systems, growth errors are prevented by correcting errors in a sector (known as an “error sector”) that has more errors than a threshold level. Threshold levels below the maximum correction capability are used to prevent growth errors. When an error sector is encountered during a read operation, the controller stops the read operation and applies a retry routine that re-reads the error sector into the buffer memory. Then, the error sector is corrected and written back to the disc during the retry routine. Stopping the read operation for each error sector encountered and performing a retry routine on the error sector results in extra revolutions for the read operation, which increases overhead. Alternatively, an entire data track can be written into the data buffer and written back to the disc to reduce disc revolutions in a retry routine. However, this dramatically increases the data buffer size and causes retry routines to be time consuming and expensive since every sector has to be read into the data buffer no matter whether the data sector has errors or not. Various embodiments of the present invention address these problems, and offer other advantages over the prior art.